import Vue from 'vue';
import App from './App.vue';
import router from './router';
import ElementUI from 'element-ui';
import VueI18n from 'vue-i18n';
import { messages } from './components/common/i18n';
import 'element-ui/lib/theme-chalk/index.css'; // 默认主题
// import './assets/css/theme-green/index.css'; // 浅绿色主题
import './assets/css/icon.css';
import './components/common/directives';
import 'babel-polyfill';
import { getToken, clearToken } from '@/utils/token';
import { getUserInfo } from './utils/userInfo';
// 接口全局挂载
import API from "@/api";
import qs from 'qs';
Vue.prototype.$QS = qs;
Vue.prototype.$API = API;
Vue.config.productionTip = false;
Vue.use(VueI18n);
Vue.use(ElementUI, {
    size: 'small'
});
const i18n = new VueI18n({
    locale: 'zh',
    messages
});


//使用钩子函数对路由进行权限跳转
router.beforeEach((to, from, next) => {
    document.title = `${to.meta.title} | 车联网后台管理系统`;
    let token = getToken();
    let useInfo = getUserInfo();
    if (token&&useInfo) {
        // 处理手输地址栏的情况，跳转的是login
        if (to.path == '/login') {
            // 返回home
            next('/');
        } else {
            next();
            // // 如果登陆了，并且跳转的是其他页面，用户信息丢失了
            // if (!username) {
            //     try {
            //         // 用户名丢失了重新发请求获取
            //         // await store.dispatch('user/userInfo');
            //         // 请求成功了，用户信息找回来了
            //         next();
            //     } catch (error) {
            //         // token过期了,或者token被伪造，被篡改了就会导致请求失败，需要重新登录
            //         // 不能直接跳到登录页面，这样会死循环的，会一直发请求，一直获取用户信息，因为此时token还在，但是是非法的或者过期的
            //         // 必须先清除token，清除用户信息，然后重新登录
            //         // await store.dispatch('user/userLogout');
            //         next('/login');
            //     }
            // }
        }
        next();
    } else {
        // 如果没有登录
        if (to.path == '/login') {
            next();
        } else {
            next('/login');
        }
    };

});
// main.js
// import lazyloadImg from '@/assets/img/lazyload.png'
// import VueLazyload from 'vue-lazyload';

// Vue.use(VueLazyload, {
//     // 懒加载图片和原图比例
//   preLoad: 1,
//     // 报错时现实的图片
//   error: lazyloadImg,
//     // 懒加载的图片
//   loading: lazyloadImg,
//     // 重新加载次数
//   attempt: 3,
// })
new Vue({
    router,
    i18n,
    render: h => h(App),
    beforeMount() {
        Vue.prototype.$bus = this;
    },
}).$mount('#app');
